home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / c-tools / vbcc / doc / history < prev    next >
Encoding:
Text File  |  1996-06-17  |  27.6 KB  |  581 lines

  1. vbcc is (c) in 1995-96 by Volker Barthelmann
  2.  
  3. (cga68k): changes in the code generator for amiga68k
  4. (cla68k): changes in the C library for amiga68k
  5. (vca68k): changes in the compiler frontend for amiga68k
  6.  
  7.  
  8. Changes since V0.3a
  9.  
  10. - vc.lib/vcs.lib/mieee.lib/m881.lib/m040.lib/vbcc/vc rebuilt
  11. - div/ldiv should be conforming now
  12. - ungetc should now work even if it is the first action to a stream (cla68k)
  13. - fflush(0) only affects files in output mode (cla68k)
  14. - removed const qualifier from the ctype-array (cla68k)
  15. - changed the ctype-functions to use the array (cla68k)
  16. - added #definition of NULL to stdio.h (hope that's correct) (cla68k)
  17. - changed several stdio-functions and added line-buffering (cla68k)
  18. - bug fixed: setbuf/setvbuf was broken (cla68k)
  19. - bug fixed: vbrowse didn't ask for gadtools.library V39
  20. - vbrowse opens a window that fits on a standard workbench by default now
  21. - bug fixed: there was a bug in newmalloc.c (cla68k)
  22. - bug fixed: included new version of the pooled memory routines for amiga.lib
  23.              and rebuilt amiga.lib; hopefully works with OS2.0 now (cla68k)
  24. - bug fixed: struct-declaration-structs have been freed too early; current
  25.              solution is not very nice, but should work
  26. - bug fixed: there should not be restrictions on the source layout any more
  27.              (problem with look-ahead fixed)
  28. - bug fixed: identifiers longer than MAXI could cause problems
  29. - bug fixed: passing incomplete types to functions without prototypes did
  30.              not cause a diagnostic
  31. - changed the internal representation of structs/unions/prototypes
  32.   - some non-conforming things in the source corrected
  33.   - hardcoded limit for struct sizes etc. eliminated
  34.   - type of incomplete structs should be ok now
  35. - bug fixed: code after an always false if etc. wasn't generated even if
  36.              it contained a label
  37.  
  38.  
  39. Changes since V0.3
  40.  
  41. - vc passes options starting with -D or -I through to the preprocessor -
  42.   the format for -pp/-ppv has changed (vca68k)
  43. - vc writes names of objects for the linker to a temporary file if they are
  44.   very long (vca68k)
  45. - vc supports option -nostdlib to prevent linking with standard-startup/libs
  46.   additional entries -l2/-l2v are necessary in vc.config (vca68k)
  47. - bug fixed: perror was called prerror in the library - ouch; Make-scripts
  48.              changed and vc.lib/vcs.lib rebuilt (cla68k)
  49. - bug fixed: perror-prototype was incorrect (cla68k)
  50. - added missing prototype for strerror() to string.h (cla68k)
  51. - added missing prototype for strtok() to string.h (cla68k)
  52. - rebuilt amigas.lib and vcs.lib (cla68k)
  53. - bug fixed: constant data in code-sections was addressed via a4 with -sd
  54.              (cga68k)
  55. - bug fixed: conversion between pointers and integers may not be omitted in
  56.              most cases (cga68k)
  57. - branches after TEST unsigned are changed now and tst may be omitted (cga68k)
  58. - rebuilt amiga.lib (cla68k)
  59. - bug fixed: fd2lib didn't work with varargs-functions expecting the
  60.              argument-list in a data register (cla68k)
  61. - added several varargs-functions to fd2lib (cla68k)
  62. - edited the Make#?lib.scripts (cp->copy, *.c->#?.c) (cla68k)
  63. - added a few xdefs to amiga.lib (cla68k)
  64.  
  65.  
  66. Changes since V0.2v
  67.  
  68. - changed the version number :-)
  69.  
  70.  
  71. Changes since V0.2u
  72.  
  73. - rebuilt vc.lib and vcs.lib
  74. - bug fixed: the vbcc-compiled cpp did not close opened files; now the
  75.              routines in mysupport.c close all opened files at exit
  76. - bug fixed: there was still an error that caused wrong line numbers to be
  77.              printed in messages when an external preprocessor was used
  78. - compiling with NO_OPTIMIZER #defined and linking without av.o, cp.o, cse.o,
  79.   flow.o, loop.o and rd.o produces a smaller executable that doesn't
  80.   include the global optimizer
  81. - compiled the cpp from the lcc-distribution with vbcc and changed vc.config
  82.   to call this one rather than dcpp (vca68k)
  83. - bug fixed: removed some float.h scratch from limits.h (cla68k)
  84. - bug fixed: some code generation errors fixed (cga68k)
  85. - bug fixed: addressing-modes were sometimes used where they shouldn't (cga68k)
  86. - bug fixed: sometimes wrong code was generated for a op= b; expressions
  87. - bug fixed: some optimizer routines sometimes called mymalloc(0) which
  88.              caused mymalloc to abort with C-libraries returning a null
  89.              pointer; fixed by changing the size to 1 in mymalloc (not
  90.              very nice, but simple)
  91. - added alternative malloc-routines that use the Amiga's AllocPooled-Rotuines
  92.   (libsrc/stdlib/newmalloc) (cla68k)
  93. - bug fixed: in the handling of switch-statements the addressing-mode-pointers
  94.              were set to zero too early and therefore later overwritten
  95.              with scratch
  96. - bug fixed: in some places memory that was already free'd was accessed under
  97.              certain circumstances
  98. - replacing multiplications by shifts was not done in recent versions (cga68k)
  99. - some minor code generation improvements (cga68k)
  100. - bug fixed: copies of local auto variables of inlined functions got
  101.              non-empty identifiers which caused corrupt code generation
  102.              under certain circumstances
  103. - bug fixed: function-inlining didn't work with return-values that must be
  104.              passed via pointer
  105. - bug fixed: variables in IDENTIFIER-nodes were searched with find_var()
  106.              in gen_code() again, rather than using a copy from
  107.              type_expression(); this generated corrupt code in certain cases
  108.              of function-inlining
  109. - rebuilt showerr and tovbr using small-data with new PhxLnk
  110. - added special inlining of strlen() and strcpy()
  111. - bug fixed: the amiga68k code generator assumed long-alignment with
  112.              inline_memcpy
  113. - bug fixed: tst may not be omitted if operand is unsigned (cga68k)
  114. - bug fixed: inline_memcpy was not only used when optimizing
  115. - bug fixed: the line number displayed in diagnostics were sometimes wrong
  116.              if an external preprocessor with # <line> "file" was used
  117. - bug fixed: function inlining messed up labels of static local vars
  118.  
  119.  
  120. Changes since V0.2t
  121.  
  122. - removed any 060-specific modulo-handling again (060 has div?l.l) (cga68k)
  123. - some minor code generation improvements with arithmetic instructions and
  124.   constants (cga68k)
  125. - warning for not correctly handled empty struct-declarations added
  126. - bug fixed: initializations of incomplete structs resulted in infinite
  127.              error loops
  128. - improved diagnostics regarding incomplete types
  129. - bug fixed: nested calls to inlined functions were broken
  130. - address-of instructions are subject to common-subexpression-elimination
  131. - bug fixed: function-inlining sometimes assigned the arguments to the wrong
  132.              variables
  133. - #pragma only-inline on/off added
  134. - some associativity optimizations are done with ADDI2P, too
  135.  
  136.  
  137. Changes since V0.2s
  138.  
  139. - some minor changes and bug fixes on vbrowse
  140. - program showerr added
  141. - bug fixed: if the return value was moved to an address register this was
  142.              supposed to set the condition codes (cga68k)
  143. - addq #const,a7 is no longer supposed to destroy condition-codes (cga68k)
  144. - bug fixed: sometimes the popping of function arguments was moved before
  145.              a call (cga68k)
  146. - added #pragma type to display the type of an expression
  147. - bug fixed: declarations of functions within functions were buggy in 0.2r,
  148.              because the prototype of the inner function was freed to early
  149. - bug fixed: vbcc assumed that "fmove.l fpx,ea" sets condition-codes for
  150.              ea (cga68k)
  151. - bug fixed: TEST-instructions were omitted even if the type was different
  152.              (could probably only happen with dirty things) (cga68k)
  153. - bug fixed: offsets for temporary buffers for scratch-registers were
  154.              sometimes incorrectly calculated (only without optimizing);
  155.              scanf() of the recent mieee.lib and m040.lib versions was
  156.              broken due to that bug
  157. - bug fixed: string constants are only allowed as initalizers for array of
  158.              char now
  159. - bug fixed: handling of long float/double is now a bit better
  160. - changed flags of a few error messages
  161. - bug fixed: problem with unexpected end of file errors fixed and some
  162.              improvements in killsp() and translation_unit()
  163. - function calls are never separated from the corresponding PUSHs now (this
  164.   might confuse the delayed popping of code-generators)
  165. - if all successors of a block have the same instruction at the beginning
  166.   it is moved to the predecessor in certain cases
  167. - space for local variables is better used in optimizing compilation now
  168. - function inlining doesn't increase label-numbers any more
  169. - handling of local registers and pointer dereferencing improved a bit
  170.   (temporary vars that get dereferenced should almost always be
  171.   assigned a proper register now)
  172. - bug fixed: rearranging of array-accesses was buggy in 0.2s
  173. - bug fixed: a previous declaration of a function was not visible in the
  174.              function definition in 0.2s
  175. - changed the ctype macros a bit (cla68k)
  176. - bug fixed: use of addressing modes was buggy in 0.2s (therefore the
  177.              last mieee.lib was broken) (cga68k)
  178. - code generation for modulo improved for 020+ (incl. 060) (cga68k)
  179.  
  180.  
  181. Changes since V0.2r
  182.  
  183. - bug fixed: conversions between unsigned<->floating point should now
  184.              always be correct with mieee.lib (cga68k) (cla68k)
  185.              mieee.lib rebuilt
  186. - if -noasm is specified the .asm file is no longer created
  187. - gen_vars() now does not create output if there were errors or -noasm
  188.   was specified (this also fixes a bug that created infinite internal
  189.   errors after certain corrupt initializers)
  190. - bug fixed: vbcc did not correctly recognize if opening of the input file
  191.              failed in V0.2q/r
  192. - some optimizations to improve array accesses
  193. - VARADR objects are subject for copy propagation now
  194. - add/sub with constant addresses gets folded (opt only)
  195. - divsl.l is not used when -cpu=68060 is selected (cga68k)
  196. - switch-statements can be implemented by SUB/TEST/BEQ sequences rather
  197.   than COMPARE/BEQ sequences (selectable with SWITCHSUBS)
  198. - bug fixed: no error for duplicate case labels was printed
  199. - bug fixed: detecting of loops did identify loops with jumps out of
  200.              the loop as normal loops
  201. - bug fixed: scope of function prototypes should now be correct
  202. - bug fixed: function parameters were not marked as DEFINED and therefore
  203.              redefinition of function parameters did not cause errors
  204.  
  205. Changes since V0.2q
  206.  
  207. - if several basic blocks have the single same successor and the last
  208.   last instruction of those statements is identical it is moved to the
  209.   common successor
  210. - for CPUs>=68040 8bit constants are not copied to registers (cga68k)
  211. - popping of function arguments is done one instruction before a TEST inst.
  212.   (I thought this was necessary to avoid certain tst-instructions, because
  213.   my manual says addq #x,a7 changes condition codes - however this seems
  214.   to be wrong) (cga68k)
  215. - Thorsten Schaaps' preprocessor integrated into vbcc
  216.   files vbpp.h and preproc.c added
  217. - new options:
  218.   - -nested-comments allows nested comments (not ANSI conforming)
  219.   - -cpp-comments allows C++ style comments (not ANSI conforming)
  220.   - -macro-redefintion allows redefinition of macros (not ANSI conforming)
  221.   - -no-trigraphs prevents expansion of trigraphs (not ANSI conforming)
  222.   - -no-preprocessor prevents use of the bultin preprocessor
  223.   - -E only preprocesses the file to <file>.i
  224.  
  225.  
  226. Changes since V0.2p
  227.  
  228. - bug fixed: strncat() did not append a 0, but behaved like strncpy (cla68k)
  229. - bug fixed: sizeof(uncomplete type) did not cause an error message
  230. - bug fixed: wrong code was generated for ?: if the condition evaluated
  231.              to a scratch-var pointing somewhere
  232. - bug fixed: pointer:0 and 0:pointer was not allowed in conditional-exp
  233. - bug fixed: delayed popping produced wrong code with nested function calls
  234. - support for #line directive of most preprocessors added
  235. - several additions made to must_convert()  (cga68k)
  236. - realloc() added to vc.lib (cla68k)
  237. - target-specific optimization options have been separated from the
  238.   -O flag
  239. - the Amiga68k code generator now accepts the following flags to replace
  240.   the former corresponding flags in the -O option:  (cga68k)
  241.   - -use-framepointer
  242.   - -no-addressing-modes
  243.   - -no-delayed-popping
  244. - bit 12 (4096) in -O activates function inlining; previously defined
  245.   functions are inlined in their caller, depending on the size of the
  246.   function
  247. - new option -inline-size can be used to in-/decrease the number of
  248.   functions to be inlined; default=30 - higher values mean more functions
  249.   get inlined
  250.  
  251.  
  252. Changes since V0.2n/0.2o
  253.  
  254. - new option -optpasses=n sets the maximum number of optimizer passes
  255. - bug fixed: ADDI2P with a short integer sometimes was not converted if the
  256.   target was a data register
  257. - constant data is placed in the code sections as long as -const-in-data
  258.   is not specified (cga68k)
  259. - m040.lib started (cla68k)
  260. - unnecessary tst instructions are sometimes eliminated (cga68k)
  261. - constants -128<=x<128 are not copied in a register for SETRETURN and PUSH
  262. - COMPARE x,#0 should now always be converted to TEST x
  263. - bug fixed: a label-statement at the end of a block caused an error
  264. - bug fixed: sometimes still used type node was freed in alg_opt
  265. - bug fixed: unsigned function arguments were sometimes converted to signed
  266. - calling scheme for ieee and ldiv functions changed (cga68k)
  267. - usage of addressing modes with ieee and ldiv functions prohibited (cga68k)
  268. - bug fixed: files opened for append were deleted, oops (cla68k)
  269. - use of addressing modes slightly changed (cga68k)
  270. - modf, ldexp and frexp added to mieee.lib and m881.lib (cla68k)
  271. - bug fixed: unsigned integers were not allowed in case labels
  272. - bug fixed: push problem
  273. - bug fixed: cmp x,#0 was sometimes converted to tst x without changing the
  274.   following branching instruction (cga68k)
  275. - for and while loops are generated differently when optimizing is
  276.   activated (first testing of the loop condition can sometimes be deleted)
  277. - bug fixed: isquickkonst2 now tests for 0<x<=8 rather than 0<=x<=8 (ouch) (cga68k)
  278. - a>>0=a<<0=a and a few other algebraic optimizations added
  279. - insert_const2() added and insert_const() changed
  280. - saverestoreregs() now has a stack for the pushed register-lists (cga68k)
  281.   (removed again, because saveregs/restoreregs has now been removed and
  282.    mechanism changed)
  283. - bug fixed: delayed popping of function arguments corrected (cga68k)
  284. - delayed popping and omitting of framepointer can now be turned on
  285.   separately (256 for framepointer, 512 for delayed popping)
  286. - bug fixed: stackoffset was sometimes incorrectly calculated
  287. - internal mechanism for passing function return values changed, structure
  288.   returns should be reentrant now
  289.   some library routines may have to be recompiled
  290.   mieee.lib was rebuilt to use the new mechanism (cla68k)
  291. - op a,b->scratchvar; move scratchvar->c is combined to op a,b->c
  292. - handling of optimizations slightly changed
  293. - bug fixed: open_out() allocated a buffer one byte too small if the input
  294.   file contained no period
  295.  
  296. - bit 2... in -O option activate heavy optimizations
  297.   - scratchvars are not assigned to registers during IC generation
  298.   - labels are optimized and a flowgraph is constructed
  299.   - branches to branches, branches to the following instruction etc. are
  300.     optimised and unreachable code is eliminated
  301.   - constants are propagated and folded
  302.   - common subexpressions are eliminated
  303.   - copies are propagated
  304.   - active variables are analysed and dead assignments eliminated
  305.   - temporary variables are recognized and assigned to registers
  306.   - registers are assigned differently using information on active variables
  307.     and loop structure
  308.  
  309. - new source files added/changed:
  310.   - opt.h : declarations etc. used in optimization routines
  311.   - opt.c : general routines, peephole optimizations and control of
  312.             optimization passes
  313.   - flow.c: construction of flowgraphs, jump optimizations and other
  314.             control-flow related routines
  315.   - regs.c: register allocation
  316.   - av.c  : analysis of active variables and elimination of dead assignments
  317.   - rd.c  : analysis of reaching definitions, constant propagation and
  318.             constant folding
  319.   - cse.c : common subexpression elimination
  320.   - cp.c  : copy propagation
  321.   - loop.c: analysis of loops and optimizations in loops
  322.  
  323. - the following warnings have been added
  324.   - use of variable before its initialization (with optimizer only)
  325.   - dead assignments (opt only)
  326.   - definition of global functions without prior declaration
  327.   - non-void functions without return-statements
  328.   - assignment in comparison context
  329.   - weird code (opt only)
  330.  
  331.  
  332. Changes since V0.2m
  333.  
  334. - if -ansi is specified assignments between differently signed pointers
  335.   will cause an error
  336. - -dontwarn=n disables all warnings if n<0
  337. - -warn option added to enable certain warnings, usage like -dontwarn
  338. - the following warnings have been added
  339.   - implicit function declarations
  340.   - function calls without prototype
  341.   - use of #pragma
  342.   - assignment/cast of integers to narrower type
  343.   - cast of pointer to pointer with stricter alignment requirements
  344.   - redundant comparisons with unsigned values
  345. - stupid, braindead error in codegenerator fixed (wrote to string constant
  346.   and caused segmentation faults on systems with memory protection) (cga68k)
  347. - TimeDelay new in amiga.lib (has to be rebuilt)
  348. - ctype.h now has function prototypes and macros should be ok with negative
  349.   arguments
  350. - macros in stdio.h now accept void* pointers and do some fancy type checking
  351.   (cla68k)
  352. - temporary hack to display correct filename and line number in error
  353.   messages
  354. - vc now handles filenames with spaces and always uses the complete path
  355.  
  356.  
  357. Changes since V0.2l
  358.  
  359. - in conditional-expressions the type of the result was used for the
  360.   generated comparison due to a bug
  361. - ceil() and floor() were added to m881.lib (cla68k)
  362. - flags may be specified more than once
  363. - vbcc does not change argv any more
  364. - output of errors/warnings changed and error/warning-texts put in <errors.h>
  365. - % with powers of two is not replaced by an 'and' any more if the operand is
  366.   signed (cga68k)
  367. - entries in the history-file now in (bad) English rather than German
  368. - -dontwarn option added to suppress certain warnings
  369. - type conversions that are unnecessary on a certain machine may be omitted
  370.  
  371.  
  372. Aenderungen seit V0.2k
  373.  
  374. - bei shifts werden keine arithmetischen Typerweiterungen mehr vorgenommen
  375. - endlose Fehlerschleifen sollten erkannt werden
  376. - Anfang eines SmallCode/SmallData-Modus; -sc und -sd schalten den jeweiligen
  377.   Modus ein; deswegen wird auch vermehrt lea/pea verwendet (cga68k)
  378. - startup.o initialisiert nun a4 fuer den SmallData-Modus (cla68k)
  379. - die xref _LVO aus startup entfernt
  380. - fd2lib geschrieben
  381. - diverse Libraryfunktionen geschrieben (vla68k)
  382. - der rechte Teil einer conditional-expression ist jetzt eine
  383.   conditional-expression (war faelschlicherweise expression)
  384. - Verwaltung der sections etwas geaendert; section=-1 am Anfang (cga68k)
  385. - Fehlerbehandlung verbessert: Initialisierungen von unvollstaendigen
  386.   Strukturen/Unionen, Arrays mit size==0 und nicht vorhandene Identifier
  387. - Fehler bei der Erkennung von Fehler-Endlosschleifen behoben; funktioniert
  388.   aber trotzdem nicht immer
  389. - Workaround fuer den compare-bug; leider nicht sehr schoen
  390. - Warnung bei dem Push-Problem
  391. - Ausdruecke hinter return wurden bemaengelt, wenn die Funktion void war
  392. - Funktionsargumente werden bei -O=256 nicht mehr sofort vom Stack geholt
  393.   sondern, wenn moeglich gesammelt und dann auf einmal
  394.  
  395.  
  396. Aenderungen seit V0.2j
  397.  
  398. - vc ruft jetzt 'FreePhxAss' statt 'CPhxAss' auf (vca68k)
  399. - free() verkraftet 0 (cla68k)
  400. - bei aufgetretenen Fehlern wird der Returncode auf EXIT_FAILURE gesetzt
  401. - keine Fehlermeldung bei Files ohne Funktionsdefinition mehr
  402. - Fehler behoben, der bei Verwendung einer Adressierungsart der Form
  403.   (d,ax,dy.w[*z]) zu unnoetigen internal errors und evtl. Schlimmerem
  404.   fuehrte (&7 vergessen) (cga68k)
  405. - difftime() wird in time.h als Makro definiert (cla68k)
  406. - #undef difftime in difftime.c eingefuegt (cla68k)
  407. - Deklaration von rename() in stdio.h korrigiert (cla68k)
  408. - wird Flag 8 (256) bei -O gesetzt, wird a5 nicht mehr als Framepointer
  409.   benutzt (cga68k)
  410. - "offset out of object"-Meldungen geaendert
  411. - string-Funktionen geaendert (cla68k)
  412. - Fehler bei Registerallocation, der auftrat, wenn der Rueckgabewert nicht
  413.   in einem Register zurueckgegen wird, behoben
  414. - Variablendeklaration geaendert; sollte jetzt korrekter sein und tentative
  415.   definitions besser behandeln
  416. - fehlendes ; in stdlib.h eingefuegt (cla68k)
  417. - bei saveregs vor einem function call wird ein Scratchregister, ueber das
  418.   die Funktion aufgerufen wird, nicht gespeichert
  419. - wenn der compare-Fehler auftritt sollte zumindest ein error gemeldet
  420.   werden (cga68k)
  421. - wenn keine lokalen Variablen benutzt werden, wird kein Platz auf dem
  422.   Stack gemacht (cga68k)
  423. - Berechnung des Alignments fuer Kopierschleife sollte jetzt auch ohne
  424.   Framepointer korrekt sein (cga68k)
  425. - vc stark geaendert und config-file eingefuehrt (vca68k)
  426. - bei Meldungen wird der Filename mit ausgegeben
  427.  
  428.  
  429. Aenderungen seit V0.2i
  430.  
  431. - Verbesserung der Codegenerierung fuer FPU-Operationen (cga68k)
  432. - Problem bei USEQ2ASZ und Zusammenfassen von IC/ASSIGN behoben
  433. - floating point nun auch ohne FPU moeglich, noch nicht 100% fehlerfrei (cga68k/cla68k)
  434. - Anfang einer Mathelibrary fuer die IEEE-Libraries (cla68k)
  435.   FloatingPoint<->UnsignedInteger nicht korrekt
  436. - Fehler bei switch(UNSIGNED) behoben
  437. - alignment von struct-members sollte wieder passen
  438. - unsigned char/short->fp mit FPU korrigiert (cga68k)
  439. - ein labeled-statement enthaelt das nachfolgende statement
  440. - _main aus mieee.lib oeffnet die Libraries nun in der richtigen
  441.   Reihenfolge (autsch) (cla68k)
  442. - Test auf am->Register in get_reg() eingebaut
  443. - Fehler bei Kopierschleife behoben
  444. - allocreg zaehlt bei Nutzung von erweiterten Adressierungsarten als
  445.   zerstoerend; sollte damit jetzt halbwegs stabil sein; allerdings duerften
  446.   noch internal errors, die aber wohl nichts mehr bedeuten, drin sein
  447. - allocreg/freereg von Registervariablen wird aus Code entfernt und internal
  448.   errors sind beseitig; sollte nur Effekt haben, wenn Returnregister als
  449.   Registervariable verwendet wird
  450. - bei initialisierten Unionen werden jetzt auch die uebrigen Werte aufgefuellt
  451. - bei initialisierten auto Strukturen und Unionen duerfen auch Strukturen/
  452.   Unionen gleichen Typs angegeben werden
  453. - die Kopierroutinen sollten jetzt in (fast?) allen Faellen korrekt
  454.   funktionieren und teilweise auch schneller sein
  455. - Fehler mit auto arrays der Form a[]=... behoben; der Offset wurde nicht
  456.   hochgezaehlt
  457. - difftime in der Math Library (cla68k)
  458. - einige ueble Fehler aus dem frontend fuer amiga68k entfernt (vca68k)
  459. - unbenannte Bitfelder werden bei Initialisierungen jetzt uebergangen
  460. - strengere Pruefung bei Zuweisungen zwischen Zeigern mit verschiedenen
  461.   Qualifiern
  462. - Funktionsdefinitionen nach altem Stil erzeugen keinen Prototype mehr
  463. - float Parameter in alten Funktionsdefinitionen werden korrekt behandelt
  464. - diverse Aenderungen bei der Belegung von Registervariablen; gibt jetzt
  465.   Register etwas leichter her
  466.  
  467.  
  468. Aenderungen seit V0.2h
  469.  
  470. - Fehler beim Kommaoperator behoben und Meldung bei fehlenden sidefx
  471. - Konvertierungsroutinen fuer target data types geaendert
  472. - Routinen fuer Fehler/Warnungen akzeptieren jetzt beliebige Parameterlisten
  473. - Initialisierungen wie (cast)&var werden erlaubt (evtl. Probleme, wenn
  474.   verschiedene Pointer existieren)
  475. - die Adresse eines Arrays kann jetzt ermittelt werden
  476. - Ueberpruefung der Gleichheit von Typen verbessert
  477. - Registerbelegung bei return verbessert
  478. - ueberfluessige Warnung bei nicht initialisierter const extern Variable
  479.   entfernt
  480. - Franks div/mod in vc.lib eingebaut (cla68k)
  481. - Fliesskomma-returnwerte nur noch in fp0, wenn fuer fpu generiert wird (cga68k)
  482. - Stringkonstanten sind nicht mehr const char[] sondern char[]
  483. - vc versteht nun -l Option (vca68k)
  484. - printf/scanf durch leicht veraenderte Versionen aus libnix ersetzt (cla68k)
  485. - Anfang einer Mathelibrary fuer 68881 (cla68k)
  486. - (hoffentlich) korrekte floating point->integer Rundung bei FPU (cga68k)
  487.  
  488.  
  489. Aenderungen seit V0.2g
  490.  
  491. - Fehler bei Registerbelegung in totem Code behoben
  492. - Fehler bei Registerbelegung in switch-statements behoben
  493. - boeser Fehler bei Variablen mit nicht-Register-return-values behoben
  494. - vc.lib: Ctrl-C wird erkannt (manchmal) (cla68k)
  495. - vc.lib: malloc() verbessert (cla68k)
  496. - vc.lib: limits.h korrigiert (cla68k)
  497. - vc.lib: time.h und time-Funktionen eingebaut (cla68k)
  498. - keine Warnung mehr bei const typedefs
  499. - Warnung bei Initialisierung von typedefs
  500. - verschiedene Aenderungen bei der Behandlung von storage-classes
  501. - globale static Variablen werden jetzt nicht mehr exportiert
  502. - storage-classes in Prototypen werden beachtet
  503. - const Variablen werden nicht mehr als Konstanten behandelt (war fehlerhaft)
  504. - Fehler in union atyps behoben (vuchar war zchar statt zuchar, argh!)
  505. - string concatenation eingebaut
  506. - Umwandlung unsigned->floating point mit FPU korrigiert (cga68k)
  507. - Vergleiche bei unsigned werden jetzt korrekt behandelt (cga68k)
  508. - bessere Behandlung von Funktionsprototypen
  509. - Zuweisungen zwischen Funktions- und Datenzeigern sind nicht mehr erlaubt
  510.  
  511.  
  512. Aenderungen seit V0.2f
  513.  
  514. - -snma entfernt (cga68k)
  515. - einige Vereinfachungen im Codegenerator wegen reg/freg-Benutzung (cga68k)
  516. - Entfernung einiger alter Codefragmente im Codegenerator (cga68k)
  517. - Abfrage bei malloc() eingebaut
  518. - einige Fehler bei der IC-Generierung im Zusammenhang mit Registerbelegung
  519.   behoben
  520. - Fehlerbehandlung verbessert; nach -maxerror=n (default 10) Fehlern
  521.   wird Uebersetzung abgebrochen (bei 0 wird nicht abgebrochen)
  522. - -ansi unterdrueckt unwichtige Warnungen und Warnungen mit ANSI-Verletzung
  523.   werden als Fehler behandelt
  524. - Flags loeschen jetzt durch &=~
  525. - Zuweisungen von Arrays werden korrekt(er) behandelt (cga68k)
  526. - Zuweisungen von groesseren Typen geaendert, muss aber noch optimiert
  527.   werden. (cga68k)
  528. - falscher Returncode in alg_opt() korrigiert
  529. - Behandlung von const-Konstanten korrigiert
  530. - Meldung, wenn main() nicht int ist
  531. - arithmetik mit void * nicht mehr erlaubt
  532. - casting nach void erlaubt
  533.  
  534.  
  535. Aenderungen seit V0.2e
  536.  
  537. - Nutzung von 680x0-Adressierungsarten eingebaut (cga68k)
  538. - Schreibweise displ(ax) durch (displ,ax) ersetzt (cga68k)
  539. - Nutzung von reg/freg; dadurch kein zusaetzlicher Pass noetig (cga68k)
  540.  
  541.  
  542. Aenderungen seit V0.2d
  543.  
  544. - Typpruefung bei Zuweisungen verbessert und nun auch bei Initialisierungen
  545. - freed free Register teilweise behoben (?)
  546. - Deklarationen von Prototypen ohne Typ werden bemaekelt
  547. - Abhanegigkeit in eigenen Include-Dateien behoben
  548. - Fehler bei arithmetischen Operationen behoben (cga68k)
  549. - falsche Fehlermeldung bei unsigned Typ als Schleifenbedingung
  550. - / und % wird nun auch mit 68000 unterstuetzt (wenn auch ineffizient) (cga68k)
  551. - Fehler bei ADDI2P und SUBIFP behoben
  552. - Fehler (mit DREFOBJ) bei Zusammenfassung op x,y->reg;move reg->z behoben
  553. - Optionen, die einen Parameter benoetigen, muessen jetzt -opt=parameter
  554.   geschrieben werden, also z.B. vbcc -cpu=68020 file.c
  555.   (das war noetig, um das Frontend und Wildcards zu vereinfachen)
  556. - enumerations eingebaut; noch einfach ohne grosse Tests, Tags werden ignoriert
  557. - arithmetische const Typen werden in Ausdruecken als Konstanten behandelt
  558.  
  559.  
  560. Aenderungen seit V0.2c
  561.  
  562. - -noa4 Option hinzugekommen (cga68k)
  563. - Fehler beim Vertauschen von COMPARE-Argumenten und mustrepeat behoben (cga68k)
  564. - Fehler bei vorzeitiger Registerfreigabe bei POSTINC/POSTDEC behoben
  565. - Fehler bei mehreren Variablendeklarationen mit Funktionen behoben
  566. - Fehler bei dc float|double behoben (cga68k)
  567. - Fehler bei sections und dc/ds behoben (cga68k)
  568. - Fehler bei Rechnungen mit FP-Registern behoben (cga68k)
  569. - diverse Fehler bei a op= b behoben
  570. - jetzt hoffentlich immer korrekte Verwendung von lsl/lsr/asr (cga68k)
  571. - vbcc hat sich endlich erfolgreich selbst kompiliert
  572. - Fliesskommakonstanten eingebaut; Berechnung aber noch zu ungenau
  573. - Deklaration fuer Bitfields eingebaut; werden aber noch als Integers behandelt
  574. - Fehler bei interner Verarbeitung von Fliesskommazahlen behoben
  575. - Deklarationen der Form unsigned a; extern a; etc. werden zugelassen
  576. - Anfaenge einer eigenen C-Library
  577.  
  578.  
  579. Volker (volker@vb.franken.de)
  580.  
  581.